package cn.tedu.oop;
/*本类用于测试封装的必要性*/
public class TestPrivate1 {
    public static void main(String[] args) {
        //3.创建用户类的对象
        new User().getMoney();
        User u = new User();

        //System.out.println(u.money);
        //4.修改对象的属性值
        //u.name = "&#x674E;&#x9035;";
        /*需要封装属性,如果不封装的话,就可以直接修改这个属性的值,不安全*/
        //u.money = 1000000000;//'money' has private access in 'cn.tedu.oop.User'
        //5.查看修改后的属性值
        //System.out.println(u.name);
        //System.out.println(u.money);
        //6.4调用操作money的方法 ,, 调用的是方法,间接调用私有属性
        System.out.println(u.getMoney());//默认的成员变量
        //u.money;//只能在本类中获取私有属性
        u.setMoney(2000); //更改money属性的值
        System.out.println(u.getMoney()); //单独的带有地址值的堆内存里面的对象私有属性
        u.setName("林冲");
        System.out.println(u.getName());
    }
}
//1.创建用户类User
class User{
    //2.定义用户类的属性
    private String name;
    //6.1封装属性--通过private关键字修饰属性即可
    //double money = 100000000;
    private double money = 1000; //保证安全后再去考虑和使用其它,

    public static void main(String[] args) {
        //new User().getMoney();
        User user = new User();
        double money2 = user.money;  //本类中才能获取私有属性

        new User().getMoney();

        System.out.println(money2);
    }



    //6.2提供方法1:查询当前账户的余额
    public double getMoney(){

         double mo = new User().money; //获取一个值需要变量类型来接

        /*后续可以在这个位置添加权限校验的代码*/
        return this.money;  //
    }
    //6.3提供方法2:修改当前账户的余额
    public void setMoney(double money){
    //public void setMoney(double mo){
        /*后续可以在这个位置添加权限校验的代码*/
        /*当本类的成员变量与局部变量同名时,可以使用this关键字指定本类(当前类的成员变量)的成员变量*/
        //this.money = money;
        //money = mo;
        this.money = money;
    }

    public void setName(String name){//设置姓名：得有参数
        this.name = name;
    }
    public String getName(){//获取姓名：得有返回值
        return name;
    }
}